﻿using BusinessEntities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DataAccess.ParticipacionVecinal {
    public class IniciativaVecinalDA {


        public List<IVConsulta> ListaIniciativa(Parametros oParametros) {

            using (var cn = new DBMSI_PVEntities()) {

                var lst = cn.PVecinal_IVConsulta(oParametros.FeInicio,
                              oParametros.FeFin, oParametros.IdCombo, oParametros.Texto,
                              oParametros.Pagina, oParametros.Paginacion);

                //var data = lst.ToList();
                List<IVConsulta> lista = (from x in lst
                                          select new IVConsulta {
                                              Id = x.Id,
                                              Codigo = x.Codigo,
                                              Descripcion = x.Descripcion,
                                              DetalleIV = x.DetalleIV,
                                              Estado = x.Estado,
                                              FeRegistro = x.FeRegistro.Value,
                                              NombreDelegado = x.NombreDelegado,
                                              SubSector = x.SubSector,
                                              Total = x.Total.Value
                                          }).ToList();

                return lista;
            }
        }

        public PVecinal_IniciativaVecinal Save(PVecinal_IniciativaVecinal oIV) {
            using (var cn = new DBMSI_PVEntities()) {
                cn.PVecinal_IniciativaVecinal.Add(oIV);
                cn.SaveChanges();
                return oIV;
            }
        }

        public PVecinal_IniciativaVecinal Update(PVecinal_IniciativaVecinal oIV) {
            using (var cn = new DBMSI_PVEntities()) {

                //var obj = (from x in cn.PVecinal_IniciativaVecinal where x.Id == oIV.Id select x).First();
                //obj = oIV;
                //cn.SaveChanges();
                //return oIV;

                cn.PVecinal_IniciativaVecinal.Attach(oIV);
                var obj = cn.Entry(oIV);
                obj.Property(e => e.Descripcion).IsModified = true;
                obj.Property(e => e.DetalleIV).IsModified = true;
                obj.Property(e => e.FeRegistro).IsModified = true;
                obj.Property(e => e.IdResponsable).IsModified = true;

                obj.Property(e => e.IdDelegadoVecinal).IsModified = true;
                obj.Property(e => e.IdSubSector).IsModified = true;

                cn.SaveChanges();
                return oIV;

            }
        }

        public PVecinal_IniciativaVecinal Get(int Id) {
            using (var cn = new DBMSI_PVEntities()) {
                var item = (from x in cn.PVecinal_IniciativaVecinal where x.Id == Id select x).FirstOrDefault();
                return item;
            }
        }

        public PVecinal_IniciativaVecinal Get(String Codigo) {
            using (var cn = new DBMSI_PVEntities()) {
                var item = (from x in cn.PVecinal_IniciativaVecinal where x.Codigo == Codigo select x).FirstOrDefault();
                return item;
            }
        }
    }
}
